package com.itsite.guider.demo.demo

import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.widget.Button
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.itsite.guider.demo.R
import com.water.guider.Guide
import com.water.guider.Guider
import com.water.guider.highlight.CircleHighlight
import com.water.guider.highlight.Highlight.oval
import com.water.guider.highlight.RectHighlight
import com.water.guider.position.Position

class NextActivity : AppCompatActivity(), View.OnClickListener {
    private var textView: TextView? = null
    private var imageView: ImageView? = null
    private var button: Button? = null
    private var guider: Guider? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_next)
        initView()
        initGuider()
    }

    private fun initView() {
        textView = findViewById<View>(R.id.textView) as TextView
        imageView = findViewById<View>(R.id.imageView) as ImageView
        button = findViewById<View>(R.id.button) as Button
        textView!!.setOnClickListener(this)
        imageView!!.setOnClickListener(this)
        button!!.setOnClickListener(this)
    }

    override fun onClick(v: View) {
        initGuider()
    }

    fun initGuider() {
        val guide0 = Guide.Builder()
            /**
             * 设置想要添加高亮的View。
             */
            .setPoint(textView!!)
            /**
             * 设置指引View的相对位置，有上下左右中等多个位置，可实现IPosition接口自定义位置。
             */
            .setPosition(Position.bottomLeft())
            /**
             * 设置高亮，有多种形状可选择，可实现IHighlight接口自定义位置。
             */
            .setHighlight(oval())
            /**
             * 设置指引View，可以是View也可以是Layout。
             */
            .setView(R.layout.guide_0)
            .build()
        val guide1 = Guide.Builder()
            .setPoint(imageView!!)
            .setPosition(Position.bottomRight())
            .setHighlight(CircleHighlight(imageView!!.width, imageView!!.height))
            .setView(R.layout.guide_0)
            .setBackground(0x5000FF00)
            .build()
        val guide2 = Guide.Builder()
            .setPoint(button!!)
            .setPosition(Position.top())
            .setHighlight(RectHighlight(button!!.width, button!!.height))
            .setView(R.layout.guide_1)
            .build()
        guider = Guider.Builder()
            /**
             * 设置锚点，可以是Activity、Fragment和任意View，最终都会找到其相应的Activity然后找到DecorView或者window对象，然后添加上去。
             */
            .setAnchor(this)
            /**
             * 如果是NEXT模式的话，先添加的先显示。还有addGuide()函数也可以添加Guide。
             */
            .addGuides(guide0, guide1, guide2)
            /**
             * Guider.MODE_NEXT表示一个接着一个显示，one by one.默认值。
             * Guider.MODE_TOGETHER表示多个Guide一起显示。
             */
            .setMode(Guider.MODE_NEXT)
            .show()
    }

    override fun onBackPressed() {
        if (guider!!.isVisible) {
            guider!!.dismiss()
        } else {
            super.onBackPressed()
        }
    }

    companion object {
        private val TAG = NextActivity::class.java.simpleName
    }
}